package br.com.toscano.gobra.domain;

import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity 
@Table(name="ITEM_TABELA_PRECO_LICITACAO")
public class ItemTabelaPrecoLicitacao extends ObjetoAbstrato {

	private static final long serialVersionUID = 13454534543354510L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name="ITPL_ID")
	private Long id;

	@ManyToOne(fetch = FetchType.LAZY, optional = false)
	@JoinColumn(name = "LICI_ID")
	private Licitacao licitacao;

 	@ManyToOne(fetch = FetchType.LAZY, optional = false)
	@JoinColumn(name = "ITPO_ID")
	private ItemTabelaPrecoObra itemTabelaPrecoObra;

	@ManyToOne(fetch = FetchType.LAZY, optional = false)
	@JoinColumn(name = "LOIT_ID")
	private LocalItem localItem;

	@ManyToOne(fetch = FetchType.LAZY, optional = false)
	@JoinColumn(name = "AGIT_ID")
	private AgrupamentoItem agrupamentoItem;

	@Column(name = "ITPL_PERIODO_INICIAL", nullable = false, precision = 19, scale = 2)
	private BigDecimal periodoInicial;
	
	@Column(name = "ITPL_PERIODO_FINAL", nullable = false, precision = 19, scale = 2)
	private BigDecimal periodoFinal;
	
	@Column(name = "ITPL_VALOR_UNITARIO", nullable = false, precision = 19, scale = 2)
	private BigDecimal valorUnitario;
	
	@Column(name = "ITPL_VALOR_UNITARIO_COM_BDI", nullable = false, precision = 19, scale = 2)
	private BigDecimal valorUnitarioComBDI;
	
	@Column(name = "ITPL_QUANTIDADE", nullable = false, precision = 19, scale = 2)
	private BigDecimal quantidade;

	@Column(name = "ITPL_VALOR_FINAL", nullable = false, precision = 19, scale = 2)
	private BigDecimal valorFinalItem;

	@Column(name = "ITPL_ORDEM_EXIBICAO", precision = 4, scale = 0)
	private Integer ordemExibicao;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Licitacao getLicitacao() {
		return licitacao;
	}

	public void setLicitacao(Licitacao licitacao) {
		this.licitacao = licitacao;
	}

	public LocalItem getLocalItem() {
		return localItem;
	}

	public void setLocalItem(LocalItem localItem) {
		this.localItem = localItem;
	}

	public AgrupamentoItem getAgrupamentoItem() {
		return agrupamentoItem;
	}

	public void setAgrupamentoItem(AgrupamentoItem agrupamentoItem) {
		this.agrupamentoItem = agrupamentoItem;
	}

	public BigDecimal getPeriodoInicial() {
		return periodoInicial;
	}

	public void setPeriodoInicial(BigDecimal periodoInicial) {
		this.periodoInicial = periodoInicial;
	}

	public BigDecimal getPeriodoFinal() {
		return periodoFinal;
	}

	public void setPeriodoFinal(BigDecimal periodoFinal) {
		this.periodoFinal = periodoFinal;
	}

	public BigDecimal getValorUnitario() {
		return valorUnitario;
	}

	public void setValorUnitario(BigDecimal valorUnitario) {
		this.valorUnitario = valorUnitario;
	}

	public BigDecimal getValorUnitarioComBDI() {
		return valorUnitarioComBDI;
	}

	public void setValorUnitarioComBDI(BigDecimal valorUnitarioComBDI) {
		this.valorUnitarioComBDI = valorUnitarioComBDI;
	}

	public BigDecimal getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(BigDecimal quantidade) {
		this.quantidade = quantidade;
	}

	public BigDecimal getValorFinalItem() {
		return valorFinalItem;
	}

	public void setValorFinalItem(BigDecimal valorFinalItem) {
		this.valorFinalItem = valorFinalItem;
	}

	public Integer getOrdemExibicao() {
		return ordemExibicao;
	}

	public void setOrdemExibicao(Integer ordemExibicao) {
		this.ordemExibicao = ordemExibicao;
	}

	public ItemTabelaPrecoObra getItemTabelaPrecoObra() {
		return itemTabelaPrecoObra;
	}

	public void setItemTabelaPrecoObra(ItemTabelaPrecoObra itemTabelaPrecoObra) {
		this.itemTabelaPrecoObra = itemTabelaPrecoObra;
	}
	

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if(!this.getClass().equals(obj.getClass()))
			return false;
		if (getClass() != obj.getClass())
			return false;
		ItemTabelaPrecoLicitacao other = (ItemTabelaPrecoLicitacao) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}
}